﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
namespace DAO
{
    public class Q_DAOBenhNhan
    {
        /// <summary>
        /// Lấy danh sách bệnh nhân
        /// </summary>
        /// <returns></returns>
        public List<BenhNhan> DanhSachBenhNhan()
        {
            List<BenhNhan> ds = null;
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from i in db.BenhNhans
                            select i;
            }
            return ds;
        }
        /// <summary>
        /// Xem thông tin bệnh nhân
        /// </summary>
        /// <param name="id">id bệnh nhân</param>
        /// <returns></returns>
        public BenhNhan ThongTinBenhNhan(int id)
        {
            BenhNhan bn = null;
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from i in db.BenhNhans
                            where i.id == id
                            select i;
                bn = (BenhNhan)query.First<BenhNhan>();
            }
            return bn;
        }
        /// <summary>
        /// Lấy danh sách bệnh nhân còn nợ phí khám bệnh
        /// </summary>
        /// <returns></returns>
        public List<BenhNhanNoPhi> dsBenhNhanNoPhi()
        {
            List<BenhNhanNoPhi> dsNoPhi = null;
            using(db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from kb in db.KhamBenhs
                            join ctkb in db.ChiTietKhamBenhs on kb.id equals ctkb.id_khambenh
                            where kb.tinh_trang_thanh_toan == false 
                            group ctkb by kb.id_benhnhan into Nogroup
                            select new BenhNhanNoPhi
                            {
                                ID_BenhNhan = (int)Nogroup.Key,
                                TongTienThanhToan = (decimal)Nogroup.Sum(key=>key.tong_tien_thanh_toan),
                                TongTienDaThanhToan = (decimal)Nogroup.Sum(key => key.tien_tam_ung),
                                TongTienConNo = (decimal)Nogroup.Sum(key => key.tong_tien_thanh_toan - key.tien_tam_ung),
                            };
                if (query == null)
                    return null;
                dsNoPhi = query.ToList<BenhNhanNoPhi>();
            }
            return dsNoPhi;
        }
        /// <summary>
        /// Thống kê danh sách bệnh nhân theo ngày.
        /// </summary>
        /// <param name="date">Ngày thống kê</param>
        /// <returns></returns>
        public List<KhamBenh> dsBenhNhanTheoNgay(DateTime date)
        {
            List<KhamBenh> dsBenhNhanNgay = null;
            using(db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from i in db.KhamBenhs
                            where i.ngay_bat_dau_dieu_tri.Value.Equals(date)
                            select i;
                if (query == null)
                    return null;
                dsBenhNhanNgay = query.ToList<KhamBenh>();
            }
            return dsBenhNhanNgay;
        }
    }    
}
